package com.syedu.day12.homework;

import com.syedu.util.InputUtil;

/**
 * description：写出一个程序，接受一个十六进制的数，输出该数值的十进制表示
 * @author Administrator
 * @date 2022/3/25 11:16
 */
public class Exercise4 {
    public static void main(String[] args) {
        String input = InputUtil.getStrLine("请您输入十六进制数字: ").toLowerCase();
        if (input.matches("0x[0-9a-f]+")) {
            String substring = input.substring(2);

            //int result = Integer.parseInt(substring, 16);
            //不使用包装类的情况下完成该题目
            long result = 0;
            for (int i = substring.length() - 1, j = 0; i >= 0; i--, j++) {
                char c = substring.charAt(i);
                if (c >= 'a' && c <= 'f') {
                    result += (c - 'a' + 10) * (long) Math.pow(16, j);
                } else {
                    result += (c - '0') * (long) Math.pow(16, j);
                }
            }
            System.out.println(result);
        } else {
            System.out.println("十六进制数字必须以0x开头!");
        }
    }
}